package ds.factcom.domain;

import java.io.Serializable;

/**
 * La clase domain es una generacion, en la cual posee el comportamiento de generar un nuevo id conociendo el ultimo
 * Ademas posee el atributo id 
 * 
 * @author Javier De Luca, Maximiliano Herrera, Matias Samblancat
 */
public abstract class Domain implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -440657670469168216L;
	
	private Integer id;
	
	/**
	 * 
	 * @return devuelve el ultimo id generado
	 */
	protected abstract Integer getLastId();
	
	/**
	 * genera un nuevo id basando en el ultimo anterior.
	 * @return nuevo id
	 */
	protected Integer generateId(){
		Integer newId = getLastId();
		newId = newId + 1;
		//ERROR:No incrementa		return newId++;
		return newId;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}
}
